草庐IT

MySQL Workbench 符号引用

全部标签

c++ - 写入 ostream 的常量引用

我正在阅读C++primer。我遇到了以下代码:#include#includeusingnamespacestd;classPrintString{public:PrintString(ostream&o=cout,charc=''):os(o),sep(c){}voidoperator()(conststring&s)const{os此代码有效,但我不知道为什么。以下是我的想法,如果有人能帮助指出我错在哪里,那就太好了......这里,'printer'是一个constPrintString对象,所以它的数据成员是const,所以'printer.os'是对cout的const引用

c++ - 引用初始化表格

所以我正在测试一些引用初始化形式,描述here.我想知道什么时候:T&ref={arg1,arg2,...};和T&&ref={arg1,arg2,...};表格将永远被使用,并且究竟是为了什么。我想这是为了用“initializer_list”初始化临时数组和构造函数,如下所示:intmain(){struct_ab{_ab(){coutiArr):a(*iArr.begin()),b(*iArr.end()){cout在这种情况下,我尝试使用默认构造函数使用临时“_ab”对象初始化const引用,如下所示:intmain(){struct_ab{_ab(){coutiArr):a(

c++ - 当 const 引用绑定(bind)到临时引用时,堆栈中会发生什么?

C++标准允许将const引用绑定(bind)到右值,从而延长临时对象的生命周期,直到引用超出范围。但是,我无法弄清楚这实际上是如何编译的,让我用一个例子来解释:std::stringfoo(){returnstd::string("foo");}voidbar(){VeryBigObjectobj;//Perhapsdosomethingwiththebigobject}intmain(int,char**){conststd::string&foo_str=foo();bar();return0;}据我所知,以x86架构为例,首先调用函数foo()并在堆栈中构造字符串对象,这意味着

c++ - 使用 const bool 引用进行后台任务取消跟踪? (C++)

我有一个桌面应用程序,当用户请求时,某些计算在后台线程中运行。有一个取消按钮。我知道向后台任务发出取消信号的“安全”或“正确”方式(使用Qt信号/槽连接、后台任务轮询的互斥体包装bool值等)。然而,在我看来最简单的事情是在我的主线程类中有一个boolcancelled,它在按下Cancel按钮时同步设置,并传递一个constbool&cancelled到它轮询的后台线程。这种方法是否有任何现实的方法会适得其反? 最佳答案 线程可以在不同的处理器上运行,每个处理器都有自己的缓存。如果bool值是原子的,你可以这样做。否则,您可能会面

c++ - 在 C++ 中将十六进制字符串转换为无符号字符

我想将字符串中的十六进制表示形式转换为无符号字符变量,如下所示:std::stringstreamss;uint8_tx;ss>std::hex>>x;//result:x=0x31(=49indecimaland='1'aschar)显然,我假设转换会导致x=0x1f(十进制=31),因为0x1f小于0xff,这是可以存储在8位无符号字符中的最大值。相反发生的是在转换中只使用了我的字符串的前8位。有人可以向我解释为什么会发生这种情况以及如何解决吗? 最佳答案 std::uint8_t是(通常见下文)unsignedchar的别名,

c++ - std::function 签名指针 vs 指针引用 = 没有区别?

这是代码示例:#include#includestructFoo{};typedefboolfunc_type(Foo*&,conststd::string&);typedefstd::functionFunctionalType;boolf(Foo*,conststd::string&){}intmain(){#if1func_type*func;func=f;#elseFunctionalTypef2;f2=f;#endif}如您所见,我已将“对指针的引用”声明为第一个参数的函数类型Foo*&,我希望该函数仅以“指针”作为第一个参数Foo*不能分配给这种类型的变量。#if1regi

c++ - 返回常量引用

我对返回const对临时对象的引用的函数声明有些困惑。在下面的代码中#include#includeusingnamespacestd;conststring&foo(){returnstring("foo");}stringbar(){returnstring("bar");}intmain(){conststring&f=foo();conststring&b=bar();cout方法foo和bar有什么区别?为什么foo给我warning:returningreferencetolocaltemporaryobject[-Wreturn-stack-address]。不是在con

c++ - 使用 boost::program_options 禁止无符号值的负参数

假设我有一个程序使用boost::program_options来解析命令行参数,其中一个有一个unsigned值:#include#includenamespacepo=boost::program_options;intmain(intargc,char*argv[]){unsignednum;po::options_descriptiondesc;desc.add_options()("num,n",po::value(&num),"Non-negativenumber");po::variables_mapvm;po::store(po::parse_command_line(

C++:通过引用按值返回

我正在寻求澄清,当一个人在函数中返回对该对象的引用并返回该对象的类型时,到底发生了什么。考虑以下函数:CObjectgetObject(){CObjectlocalObject;CObject&objectRef(localObject);returnobjectRef;}据我了解,此函数将返回“localObject”的拷贝,而不是返回对“localObject”的引用。这个对吗?它本质上是创建并返回一个以localObject作为构造函数参数的新对象吗?例如,CObjectnewObject(localObject); 最佳答案

c++ - 字节设置一个无符号短

我正在尝试使用memset单独设置无符号短变量中的字节:#include#includeintmain(){unsignedshorttest2;//2bytesstd::cout我得到的输出是:sizeoftest2:2value:7777是0x4D。所以出于某种原因,它没有获取我试图在变量的第二个字节上设置的0x42。这是为什么? 最佳答案 &test2+1实际上会将地址推进sizeof(test2),即2,并将指针移到范围之外。尝试转换为char*:#include#includeintmain(){unsignedshort